#include <iostream>
#include <string>
#include <stack>

#include "filemanager.hpp"

using namespace std;

int main()
{
    int i, tipus;
    unsigned short mr, mcc;
    string ordre, nomf, key, altres;
    fileManager fileman((char*)"prova");
    
    while(!cin.eof())
    {
        cin >> i >> ordre >> nomf >> tipus >> mr >> mcc >> key >> altres;
        if(ordre == string("crearf")) {
            cout << "COMANDA " << i << " - ";
            
            // Comprovem si es compleixen les condicions per crear un nou fitxer.
            if (tipus != 3) {
                cout << "ERROR CREARF(NOM=" << nomf << " TIPUS=" << tipus << "): ";
                cout << "Tipus no implementat." << endl;
            } else if (mcc > mr) {
                cout << "ERROR CREARF(NOM=" << nomf << " TIPUS=" << tipus << " MR=" << mr << " MCC=" << mcc << "): ";
                cout << "El mcc es mes gran que el mr." << endl;
            } else if (mr > 1018) {
                cout << "ERROR CREARF(NOM=" << nomf << " TIPUS=" << tipus << " MR=" << mr << " MCC=" << mcc << "): ";
                cout << "El registre es mes gran que la pagina." << endl;
            } else {
                fileman.crearf(nomf, tipus, mr, mcc);
            }
        }
        else if(ordre == string("delf"))
        {
            cout << "COMANDA " << i << " - ";
            fileman.delf(nomf);
        }
        else if(ordre == string("insertr"))
        {
            cout << "COMANDA " << i << " - ";
            fileman.insertr(nomf, key, altres);
        }
        else if(ordre == string("delr"))
        {
            cout << "COMANDA " << i << " - ";
            fileman.delr(nomf, key);
        }
        else if(ordre == string("query"))
        {
            cout << "COMANDA " << i << " - ";
            
            // Comprovem si es compleixen les condicions per fer una query.
            if (tipus != 1) {
                cout << "ERROR QUERY(NOM=" << nomf << " TIPUS=" << tipus << "): ";
                cout << "Tipus no implementat." << endl;
            } else {
                fileman.query(nomf, tipus, key, altres);
            }
                
        }
        // Final d'arxiu o error de sintaxi
        else if(ordre == "") {}
        else cout << "ERROR de sintaxi E/S" << endl;
        ordre = "";
    }
}

